The McLaren driver was just 0.02s faster than his Red Bull Racing rival while a mistake on his flying lap left Oscar Piastri 10th.
Daniel Ricciardo meanwhile was an early casualty as RB failed to fire, he and team-mate Yuki Tsunoda eliminated from Qualifying 1.
In the minutes prior to the session, stewards ruled both Charles Leclerc and Lance Stroll would, effectively, go without punishment for their Free Practice 3 clashes.
Both had made contact after being impeded in the final hour of practice earlier in the day, Stroll making contact with Hamilton and Leclerc with Lando Norris.
The pair were handed reprimands after they deliberately made contact, a slap on the wrist which officials felt was inline with precedent.
Among the early runners as Qualifying 1 began, Daniel Ricciardo logged a 1:13.771s, three-tenths quicker than Yuki Tsunoda in the other RB.
Of the heavy hitters, Sergio Perez went first as he clocked a 1:13.090s for Red Bull Racing to move to the top of the timesheets.
It didn’t last long, though the Mexican’s focus during practice has been on race pace, given that he has a three-place grid penalty for driving a car in dangerous condition in Canada.
A host of drivers soon went faster, including Nico Hulkenberg and Pierre Gasly, as Leclerc lowered the benchmark to 1:12.257s.
That pushed Ricciardo and Tsunoda into the bottom five, Alex Albon the man on the bubble on a 1:13.398s midway through the first part of the session.
The final runs saw the order change dramatically, finally settling with Hamilton fastest from Leclerc, Verstappen, and Norris.
At the other end of the timesheets were Kevin Magnussen, Tsunoda, Ricciardo, Albon, and Logan Sargeant; the quintet eliminated from the session.
Qualifying 2 began slowly, Aston Martin breaking the silence by sending Stroll out a minute into the segment.
He banked a 1:13.630s, some eight-tenths slower than he’d managed in Qualifying 1.
The bulk of the field headed out with around 10 minutes to run, most opting for new tyres.
Hamilton was on used rubber for his initial lap – the Brit having run an extra set in the first part of the three-part session.
The order settled with Verstappen fastest from Norris, Sainz, and Piastri, with Leclerc fifth.
Verstappen’s time, a 1:11.653s, compared with his 1:12.306s from Qualifying 1.
Perez in the other Red Bull Racing was only eight, while Hamilton 13th on his used set of soft tyres.
With two minutes remaining, Verstappen, Norris, Sainz, and Leclerc opted to remain in the garage, the latter fifth, while fourth-placed Piastri did head back out.
On a new set of tyres, Hamilton delivered a 1:11.792s as he improved to second fastest.
When the chequered flag waved, Alonso, Valtteri Bottas, Hulkenberg, Stroll, and Zhou Guanyu missed the cut.
Piastri did not improve with his final lap but progressed to Qualifying 3 in sixth, his best a 1:12.011s.
Perez signalled the start of Qualifying 3 as the first man on track, running half a lap out of sequence with the bulk of the remaining 10 runners.
On a set of used tyres, he managed a 1:13.061s, a second slower than his Qualifying 2 best.
Sainz was fast, two-tenths faster than anyone to the first sector but lost time as the lap wore on.
His 1:11.915s proved only good enough for second as Verstappen logged a 1:11.673s to take provisional pole.
Norris slotted himself into second when he completed his first lap, logging a 1:11.796s.
Piastri in the other McLaren had his lap deleted for track limits at Turn 10, a 1:12.542s that would have left him seventh ahead of Pierre Gasly.
The pack headed back out with three minutes remaining, Piastri beginning his final lap with 100 seconds remaining in qualifying.
He was competitive through the first third but dropped time through the middle part of the lap.
It all came undone at Turn 11 as he ran off the road on corner exit, forcing him to abandon his lap and locking him into 10th on the grid.
Verstappen improved to a 1:11.403s but still lost out on pole, as Norris managed a 1:11.383s to steal top spot.
Hamilton was third best ahead of Russell in the other Mercedes, with the two Ferraris locking out the third row, Leclerc ahead of Sainz.
Then came Gasly, Perez, Ocon, and Perez – the Mexican set to drop to 11th on the grid courtesy of his three-place penalty.